﻿using Newtonsoft.Json;
using System;
using System.IO;
using Translator;

namespace Translator
{
    /// <summary>
    /// 配置文件帮助类
    /// </summary>
    /// <remarks>
    /// 该类用于加载和保存应用程序的配置文件。
    /// 配置文件包括百度翻译API的密钥和应用程序设置。
    /// </remarks>
    /// 

    public static class ConfigHelper
    {
        private static AppConfig _config;

        public static AppConfig Config
        {
            get
            {
                if (_config == null)
                {
                    LoadConfig();
                }
                return _config;
            }
        }

        private static void LoadConfig()
        {
            string configPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "config.json");

            try
            {
                if (!File.Exists(configPath))
                {
                    // 如果文件不存在，创建默认配置
                    _config = new AppConfig
                    {
                        BaiduTranslate = new AppConfig.BaiduTranslateConfig(),
                        AppSettings = new AppConfig.AppSettingsConfig
                        {
                            Hotkey = "Control+Alt+T",
                            StartMinimized = true,
                            DefaultFromLanguage = "auto",
                            DefaultToLanguage = "zh"
                        }
                    };

                    SaveConfig();
                    return;
                }

                string json = File.ReadAllText(configPath);
                _config = JsonConvert.DeserializeObject<AppConfig>(json);
            }
            catch (Exception ex)
            {
                Console.WriteLine($"加载配置文件失败: {ex.Message}");
                _config = new AppConfig(); // 使用默认配置
            }
        }

        public static void SaveConfig()
        {
            string configPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "config.json");
            string json = JsonConvert.SerializeObject(_config, Formatting.Indented);
            File.WriteAllText(configPath, json);
        }
    }
}
